// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IoC.cs" company="Web Advanced">
// Copyright 2012 Web Advanced (www.webadvanced.com)
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0

// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// </copyright>
// --------------------------------------------------------------------------------------------------------------------


using StructureMap;
using Ideas2Realize.Data.Business.Interface;
using Ideas2Realize.Data.Business;
using Ideas2Realize.CommonInterfaces;
using Ideas2Realize.Data.Business.Services;
using System.Security.Principal;
using Ideas2Realize.Controllers;
namespace Ideas2Realize.DependencyResolution {
    public static class IoC {
        public static IContainer Initialize() {
            ObjectFactory.Initialize(x =>
                        {
                            x.Scan(scan =>
                                    {
                                        scan.Assembly("Ideas2Realize");
                                        scan.Assembly("Ideas2Realize.Data");
                                        scan.Assembly("Ideas2Realize.CommonInterfaces");
                                        scan.WithDefaultConventions();
                                    });

                            // x.ForConcreteType<BaseController>().Configure.Setter<IAuthorizationService>().IsTheDefault();
                            x.For<IAuthorizationService>().Use<AuthorizationService>();          
                            x.For<IUserRepository>().Use<UserRepository>();
                            x.For<IDeviationRepository>().Use<DeviationRepository>();
                            x.For<INewsItemRepository>().Use<NewsItemRepository>();
                        });

            return ObjectFactory.Container;
        }
    }
}